package com.whfc.ms.api.hdc.service;

import com.whfc.common.result.PageData;
import com.whfc.hdc.dto.FshDeviceDataDTO;
import com.whfc.hdc.dto.FshDeviceMediaDTO;
import com.whfc.hdc.dto.FshStrRoomIdDTO;
import com.whfc.hdc.params.FshDeviceControlParam;
import com.whfc.hdc.params.FshDeviceInitParam;
import com.whfc.hdc.params.FshEnterRoomParam;
import org.springframework.web.multipart.MultipartFile;

import java.util.Date;
import java.util.List;

/**
 * @author qzexing
 * @version 1.0
 * @date 2021-04-09 15:19
 */
public interface MsFshService {

    /**
     * 获取视频安全帽列表
     *
     * @param pageNum  页码
     * @param pageSize 每页数量
     * @param keyword  搜索关键字
     * @return 视频安全帽列表
     */
    PageData<FshDeviceDataDTO> list(Integer pageNum, Integer pageSize, String keyword);

    /**
     * 视频安全帽控制
     *
     * @param params 控制参数
     */
    void control(FshDeviceControlParam params);

    /**
     * 获取视频安全帽历史数据
     *
     * @param sn        设备SN
     * @param pageNum   页码
     * @param pageSize  每页数量
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 视频安全帽历史数据
     */
    PageData<FshDeviceDataDTO> getDataLog(String sn, Integer pageNum, Integer pageSize, Date startTime, Date endTime);

    /**
     * 获取视频安全帽多媒体数据
     *
     * @param sn         设备SN
     * @param pageNum    页码
     * @param pageSize   每页数量
     * @param startTime  开始时间
     * @param endTime    结束时间
     * @param mediaTypes 文件类型
     * @param sources    来源类型
     * @return 安全帽多媒体数据
     */
    PageData<FshDeviceMediaDTO> getMediaList(String sn, Integer pageNum, Integer pageSize, Date startTime, Date endTime,
                                             List<Integer> mediaTypes, List<Integer> sources);

    /**
     * 视频安全帽上传文件
     *
     * @param sn        设备SN
     * @param mediaType 文件类型
     * @param file      文件
     */
    void upload(String sn, Integer mediaType, MultipartFile file);


    /**
     * 初始化视频安全帽设备数据
     *
     * @param params 请求参数
     */
    void initDeviceConfig(FshDeviceInitParam params);


    /**
     * 发起通话
     *
     * @param params 参数
     * @return 房间号
     */
    FshStrRoomIdDTO enterRoom(FshEnterRoomParam params);
}
